Ruby on Rails
https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Ruby_On_Rails_Logo.svg/411px-Ruby_On_Rails_Logo.svg.png?20170116014735
コピペ用Concern
ActiveSupport の機能。
model の処理を共通化したいときに使える。
code:ruby
module Sampleable
extend ActiveSupport::Concern
class_methods do
# ここにクラスメソッドを書く
end
included do
# ここにインスタンスメソッドを書く
end
end
使う側は include する。
code:ruby
class Something < ActiveRecord::Base
include Samplable
end
Validatorをテストする
ActiveModel::Validations を include した構造体を用意し、検証対象の Validator を割り当てる
code:ruby
let(:test_class) {
Struct.new(:foo, :baz) do
include ActiveModel::Validations
validates_with SomethingValidator
end
}
describe '#validate' do
let(:foo){ 'aaaaa' }
let(:baz){ 'bbbbb' }
subject { test_class.new(foo, baz) }
context '検証を通過する' do
it { should be_valid }
end
context '検証を通過しない' do
let(:baz){ nil }
it { should be_valid }
end
end
その場でデバッグする
pry-rails のインストールが必要。binding.pry と記載した場所で対話型モードに切り替わる。
binding する処理に差し掛かると、処理を中断してアプリを実行中のターミナルに制御が移る。
binding したタイミングのスコープが有効であり、変数や定義を直接参照できる。
binding を抜ける場合は next を実行するか !!! を実行すると強制終了できる。
code:ruby
context do
it do
# ...
binding.pry
end
end